Skip to main content

Skill.dat

This file contains the configuration for all skills in the game. Each skill entry defines its properties, effects, requirements, and behavior.

Example​

Skill.dat
#=========================================================
VNUM 1
NAME zts3e
TYPE 1 1 0 0 0 0
COST 0 0 0
LEVEL 0 0 0 0 0
EFFECT 0 0 0 0 0 0 0 0 0
TARGET 0 0 0 0 0
DATA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
BASIC 0 0 0 0 0 0
BASIC 1 0 0 0 0 0
BASIC 2 0 0 0 0 0
BASIC 3 0 0 0 0 0
BASIC 4 0 0 0 0 0
FCOMBO 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
CELL 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Z_DESC 1
zts4e
#=========================================================

Notes​

  • Between each skill configuration there is a #===... separator.
  • This file never uses spaces, only tabs.
  • If you specify a wrong zts value (translation), it will display that zts value (for example zts3e) in game.
  • One skill can have more than one zts description line.

Format​

Skill.dat
#=========================================================
VNUM {SkillVnum}
NAME {SkillCodeName}
TYPE {SkillType} {CastId} {Class} {AttackType} {SecondaryWeapon} {Element}
COST {CPCost} {GoldCost} {SpecialCost}
LEVEL {JobLevel} {AdventurerLevel} {SwordsmanLevel} {ArcherLevel} {MageLevel}
EFFECT {SkillIconImg} {ctEff} {ctAnim} {suEff} {suAnim} 0 0 0 0
TARGET {TargetType} {HitType} {Range} {TargetRange} {TargetGroup}
DATA {UpgradeSkill} {SP/PSP} 0 0 {CastTime} {Cooldown} 0 0 {MpCost} {DashSpeed} {ItemVNum} {Range} {TargetRange} 0 0
BASIC 0 {BCardVNUM} {BCardSub} {EffectVal_1} {EffectVal_2} {Target}
BASIC 1 {BCardVNUM} {BCardSub} {EffectVal_1} {EffectVal_2} {Target}
BASIC 2 {BCardVNUM} {BCardSub} {EffectVal_1} {EffectVal_2} {Target}
BASIC 3 {BCardVNUM} {BCardSub} {EffectVal_1} {EffectVal_2} {Target}
BASIC 4 {BCardVNUM} {BCardSub} {EffectVal_1} {EffectVal_2} {Target}
FCOMBO {IsCombo} {FirstActivationHit} {FirstComboAttackAnimation} {FirstComboEffect} {SecondActivationHit} {SecondComboAttackAnimation} {SecondComboEffect} {ThirdActivationHit} {ThirdComboAttackAnimation} {ThirdComboEffect} {FourthActivationHit} {FourthComboAttackAnimation} {FourthComboEffect} {FifthActivationHit} {FifthComboAttackAnimation} {FifthComboEffect}
CELL {unk1} {unk2} [{xOffset} {yOffset} {isOn}]x20 {Reverse}
Z_DESC {ingameDescLinesCount}
{DescriptionCodeName}
{DescriptionCodeName2}
[...]
#=========================================================
warning

It's important to remember that values are separated by tabs, not spaces.

Visual Studio Code replaces tabs with spaces by default. That's why it's recommended to use Notepad++ or other text editor that will not replace tabs with spaces.

NAME and Z_DESC​

  • {SkillCodeName} and {DescriptionCodeName} contain the key for translation. For example zts3e is a key for translation.
  • Translations can be found in _code_<lang>_<filetype>.txt files (for example _code_en_Skill.txt).
  • If you specify a wrong zts value (translation), it will display that zts value (for example zts3e) in game.
  • Similar to Item.dat Name

TYPE​

	TYPE	{SkillType}	{CastId}	{Class}	{AttackType}	{SecondaryWeapon}	{Element}

SkillType​

ValueDescription
0Passive
1Normal player skill
2Skill upgrade
3Action/emote
4Monster skill
5Partner skill

CastId​

Used in packets like u_s and specifies the order in which skills are displayed in the skill list.

Class​

Class ID to which this skill belongs.

ValueDescription
0Adventurer
1Swordsman
2Archer
3Mage
4Martial Artist
28PSP attacking skills
29PSP buffs
30Nosmates skills
31Monster skills
32Pajama
33Ranger
......
62Wedding SP
63SP3 Martial Artist

AttackType​

ValueDescription
0Melee
1Ranged
2Magic
3Other - for pajama's basic attack and Chicken's basic & skill
4Charge - no-sp skills that charge the damage to the next attack. Not to be confused with for example SP2Archer's charge. To be more technical and specific, this skill's BCards are added to the next skill used
5Dash - all skills that use dashes/charges etc. to move player's position

SecondaryWeapon​

Boolean value. If true (1), then skill uses the secondary weapon.

Element​

Elemental attribute of the skill.

ValueElement
0No element No element
1Fire Fire
2Water Water
3Light Light
4Dark Dark

COST​

	COST	{CPCost}	{GoldCost}	{SpecialCost}

CPCost​

Cost in CP (Combat Points).

In OpenNos if set to -1, it becomes 0.

GoldCost​

Cost in gold to learn the skill.

SpecialCost​

Unknown value, but if it's equal to 999, the skill is a combo skill. Values like 150000, 70000, 20000 etc. can be found in [Advanced] passives and skill upgrades.

LEVEL​

	LEVEL	{JobLevel}	{AdventurerLevel}	{SwordsmanLevel}	{ArcherLevel}	{MageLevel}

If everything is equal to 0 - no level restrictions. Uses adventurer's value if there is one and specific class' is equal to 0.

EFFECT​

	EFFECT	{SkillIconImg}	{ctEff}	{ctAnim}	{suEff}	{suAnim}	0	0	0	0

SkillIconImg​

ID of the skill icon image.

ctEff​

Casting effect

ctAnim​

Casting animation

suEff​

Skill use effect

suAnim​

Skill use anim

TARGET​

	TARGET	{TargetType}	{HitType}	{Range}	{TargetRange}	{TargetGroup}

TargetType​

ValueDescription
0Choice - e.g. basic attack
1None (self) - e.g. mage's regeneration aura
2None (self) or choice - e.g. holy's heal
3Non-target - e.g. scout's teleport

HitType​

Which entities are targeted.

ValueDescription
0Choice only, single target
1Enemies in affected AoE
2Allies in affected AoE
3Special area - CELL
4Player and his NosMates - only 5 skills have this

Range​

If 0, it's around the player.

TargetRange​

Area of effect range.

warning

TargetRange could be AoERange?? need to verify

TargetGroup​

Affected entities.

ValueDescription
0Enemies
1Debuff for enemies (no damage, only debuff)
2Buff for allies (no damage, only buff)
3None - pajama skills and wedding SP, because they don't use su, but send cancel and use some guri instead

DATA​

	DATA	{UpgradeSkill}	{SP/PSP}	0	0	{CastTime}	{Cooldown}	0	0	{MpCost}	{DashSpeed}	{RequiredItemVNum}	{Range}	{TargetRange}	0	0

UpgradeSkill​

If SkillType == 2 (upgrade) - upgrade skill parent VNUM.

SP/PSP​

if SkillType == 1 -> SP ID if SkillType == 5 -> PSP ID

CastTime​

Casting time in deciseconds (so value 100 would be 10 seconds).

Cooldown​

Cooldown time in deciseconds (so value 3 would be 0.3 seconds).

MpCost​

Mana Points cost to use the skill.

DashSpeed​

Movement speed of the dash.

RequiredItemVNum​

If not 0 its a VNUM of an item required to use this skill (archer's poisons).

Range​

Range of the skill.

TargetRange​

Target range of the skill.

warning

TargetRange could be AoERange?? need to verify

BASIC​

	BASIC	{Index}	{BCardVNUM}	{BCardSub}	{EffectVal_1}	{EffectVal_2}	{Target}

See definition in Item.dat.

The only difference is {Target} which is a bit different:

ValueDescription
0Self - BCards with this will be added to caster's stats before the attack so that they work during the attack. And then removed after. All normal stuff like "Melee damage increased by x" or "Crit damage incr. by x%"
1I think it is bonuses that also add before the attack and other calculations (so if a debuff is inflicted with this 1, the attack have to take this debuff to calculations)
2No idea, but it targets the caster, like 0 and 1
3All Targets - basically this BCard triggers on all targets after the attack
4No idea, but about 90% of "Decreases target's HP by x%" have it, alongside with a bunch of other normal enemy-related BCards, like "x% chance to inflict x debuff"

The Opennos parser processes BCards with the following logic:

  • If BCardVNUM is 0 or 255, the BCard is skipped
  • SubType is calculated as: ((BCardSub + 1) * 10 + 1 + (EffectVal_1 < 0 ? 1 : 0))
  • IsLevelScaled is true if EffectVal_1 >= 0 and EffectVal_1 % 4 != 0
  • IsLevelDivided is true if EffectVal_1 >= 0 and EffectVal_1 % 4 == 2
  • FirstData is EffectVal_1 if positive, otherwise -EffectVal_1 / 4
  • SecondData is EffectVal_2 / 4 if positive, otherwise -EffectVal_2 / 4
  • ThirdData is Target / 4 if positive, otherwise -Target / 4

FCOMBO​

	FCOMBO	{IsCombo}	{FirstActivationHit}	{FirstComboAttackAnimation}	{FirstComboEffect}	{SecondActivationHit}	{SecondComboAttackAnimation}	{SecondComboEffect}	{ThirdActivationHit}	{ThirdComboAttackAnimation}	{ThirdComboEffect}	{FourthActivationHit}	{FourthComboAttackAnimation}	{FourthComboEffect}	{FifthActivationHit}	{FifthComboAttackAnimation}	{FifthComboEffect}

IsCombo​

If true, enables the "animation combos". Each consecutive attack deals more damage.

Combo Slots​

There are 5 "slots" for the fcombos:

  • 1st one deals 100% damage
  • 2nd - 105% damage
  • 3rd - 115% damage
  • 4th and 5th are unknown because never used on official

The damage bonus is added to base attack damage (e.g. melee).

Each slot contains:

  • {___ActivationHit} - number of consecutive hits that triggers this animation
  • {___ComboAttackAnimation} - animation ID
  • {___ComboEffect} - animation VFX

CELL​

	CELL	{unk1}	{unk2}	[{xOffset}	{yOffset}	{isOn}]x20	{Reverse}

20 times [{xOffset} {yOffset} {isOn}], it's like a list of points (cells) for Special Area skills. The offsets are relative to your character or the target (depends on {Reverse}). If you need more info about it - you will have to figure it out yourself.

unk1, unk2​

Unknown field. Purpose not documented.

xOffset yOffset isOn (20 instances)​

There are 20 instances of this field.

  • xOffset - X coordinate offset for each cell position.
  • yOffset - Y coordinate offset for each cell position.
  • isOn - Boolean value indicating if this cell position is active.

Reverse​

Boolean value determining if offsets are relative to the character (false) or target (true).

Common Issues​

Game Crashes​

Make sure format is correct:

  • Are you using tabs instead of spaces?
  • Is there a #===... separator between each skill configuration?
  • Are the values in the correct order?
  • Are the values in correct range?
  • Do you have the correct amount of parameters in each line?

How to Change Skill Icon?​

SkillIconImg is located in EFFECT row. You need to change it to the correct icon id. If icon does not exist it will default to question mark icon.

New icons can be added to the NSipData.NOS file. The file name is the icon id.

Sources​